A typical H.264 universal decoder implementation needs a high dual data rate (DDR) memory footprint. This is primarily due to the large amount of memory needed for storing reference frames and co-located macroblock information required for decoding bidirectionally predicted (B) frame macroblocks. This is a big problem especially for High Definition (HD) decoding due to the large frame size.
A H.264 decoder typically requires multiple frames to be stored in a decoded picture buffer (DPB) as reference frames. The decoder may require up to N frames depending on the resolution. In addition many frames worth of macroblock information have to be stored in the DDR memory. These are co-located macroblock information needed to decode B macroblocks. This macroblock information typically needs to store 208 bytes for each macroblock.
According to the H.264 standard, five current decoded frames are need as reference frames for HD of 1920 pixels by 1080 pixels. The amount of memory needed for padded reference buffers and co-located macroblock information buffers is (4+1)*[((1920+64)*(1088+96)*1.5)+(8160*208)] or 24.9 Mbytes. Differing numbers of frame buffers is applicable for other pixel size resolutions. For example, for D1 resolution (720 pixels by 480 pixels) the maximum number of frame buffers is six. For CIF resolution (352 pixels by 288 pixels) the maximum number of frame buffers is 16.
This is a huge amount of memory. Many systems will not have this much free memory. This problem also becomes more severe in multichannel systems, where this large amount of memory needs to be allocated for each channel. This will demand a huge amount of DDR. Typical H264 decoder implementations need this memory regardless of the application or the type of streams/group of pictures (GOP) structures used.